package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import negocio.Categoria;

public class AdminPersistenciaPrediccionPeso {

	
private static AdminPersistenciaPrediccionPeso instancia;
	
	public static AdminPersistenciaPrediccionPeso getInstancia(){
		if (instancia == null)
			instancia = new AdminPersistenciaPrediccionPeso();
		return instancia;
	}
	
	
	public int prediccionPeso(String pesoDeseado, String categoria) {
		Connection con = PoolConnection.getPoolConnection().getConnection();
		try
		{
			PreparedStatement ps = con.prepareStatement("select (?-peso)/gananciaDiaria from " +
					"SEMISAG4.dbo.categorias where tipo=?");
			
			ps.setInt(1, Integer.parseInt((pesoDeseado)));
			ps.setString(2, categoria);
			ResultSet rs = ps.executeQuery();
			int resultado = 0;
			while (rs.next())
				resultado = rs.getInt(1);
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return resultado;
		}
		catch(Exception e)
		{
			System.out.println("Error en select prediccion prediccionPeso");
			return -1;

		}			
	}
	
	public List<Categoria> levantarCategorias() {
		Connection con = PoolConnection.getPoolConnection().getConnection();
		try
		{
			PreparedStatement ps = con.prepareStatement("select * from SEMISAG4.dbo.categorias");
			ResultSet rs = ps.executeQuery();
			String tipo=null;
			int peso=0;
			int pesoFinal=0;
			List<Categoria> categorias = new ArrayList<Categoria>();
			
			while (rs.next())
			{
				Categoria categoria = new Categoria();
				categoria.setIdCategoria(rs.getInt(1));
				categoria.setTipo(rs.getString(2));
				categoria.setPeso(rs.getInt(3));
				categoria.setPesoFinal(rs.getFloat(4));
				categorias.add(categoria);
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return categorias;
		}
		catch(Exception e)
		{
			System.out.println("Error en select levantarCategorias");
			return null;

		}			
	}
	
}
